@inproceedings{Bahr:2011:CDT:2036918.2036930,
 author = {Bahr, Patrick and Hvitved, Tom},
 title = {Compositional data types},
 booktitle = {Workshop on Generic Programming},
 series = {WGP '11},
 year = {2011},
 location = {Tokyo, Japan},
 pages = {83--94},
 numpages = {12},
}
% publisher = {ACM},
% address = {New York, NY, USA},
% keywords = {algebraic programming, deforestation, mutual recursion, reusability},

@article{Chapman:2010:GAL:1932681.1863547,
 author = {Chapman, James and Dagand, Pierre-\'{E}variste and McBride, Conor and Morris, Peter},
 title = {The gentle art of levitation},
 journal = {SIGPLAN Not.},
 volume = {45},
 issue = {9},
 year = {2010},
 pages = {3--14},
 numpages = {12},
} 
% month = {September},
% publisher = {ACM},
% address = {New York, NY, USA},
% keywords = {data structure, metaprogramming, monads, proof assistants, type systems},

@inproceedings{Chapman:2010:GAL:1863543.1863547,
 author = {Chapman, James and Dagand, Pierre-\'{E}variste and McBride, Conor and Morris, Peter},
 title = {The gentle art of levitation},
 booktitle = {International Conference on Functional Programming},
 series = {ICFP '10},
 year = {2010},
 location = {Baltimore, Maryland, USA},
 pages = {3--14},
 numpages = {12},
} 
% publisher = {ACM},
% address = {New York, NY, USA},
% keywords = {data structure, metaprogramming, monads, proof assistants, type systems},

@INPROCEEDINGS{nested,
    author = {Richard Bird and Lambert Meertens},
    title = {Nested datatypes},
    booktitle = {International Conference on Mathematics of Program Construction},
    year = {1998},
    pages = {52--67},
}
%    booktitle = {In MPC’98, volume 1422 of LNCS},
%    publisher = {Springer-Verlag}

@inproceedings{generic-deriving,
  author = {Magalh\~aes, Jos\'e Pedro and Dijkstra, Atze and Jeuring, Johan and L\"{o}h, Andres},
  title = {A generic deriving mechanism for {Haskell}},
  booktitle = {Haskell Symposium},
  series = {Haskell '09},
  year = {2010},
  pages = {37--48},
  location = {Baltimore, Maryland, USA},
}
%  publisher = {ACM},
%  address = {New York, NY, USA},

@inproceedings{multirec,
 author = {Yakushev, Alexey Rodriguez and Holdermans, Stefan and L\"{o}h, Andres and Jeuring, Johan},
 title = {Generic programming with fixed points for mutually recursive datatypes},
 booktitle = {International Conference on Functional Programming},
 series = {ICFP '09},
 year = {2009},
 location = {Edinburgh, Scotland},
 pages = {233--244},
 numpages = {12},
} 
% publisher = {ACM},
% address = {New York, NY, USA},
% keywords = {datatype-generic programming, fixed points, haskell, mutually recursive datatypes},


@INPROCEEDINGS{subset-types,
    author = {Aaron Stump},
    title = {Subset Types and Partial Functions},
    booktitle = {19th International Conference on Automated Deduction},
    year = {2003},
    pages = {151--165}
}

@article{compos,
 author = {Bringert, Bj\"{O}rn and Ranta, Aarne},
 title = {A pattern for almost compositional functions},
 journal = {Journal of Functional Programming},
 volume = {18},
 number = {5-6},
 year = {2008},
 pages = {567--598},
 numpages = {32},
} 
% url = {http://dx.doi.org/10.1017/S0956796808006898},
% doi = {10.1017/S0956796808006898},
% acmid = {1520011},
% publisher = {Cambridge University Press},
% address = {New York, NY, USA},

@inproceedings{type-families,
 author = {Schrijvers, Tom and Peyton Jones, Simon and Chakravarty, Manuel and Sulzmann, Martin},
 title = {Type checking with open type functions},
 booktitle = {International Conference on Functional Programming},
 series = {ICFP '08},
 year = {2008},
 location = {Victoria, BC, Canada},
 pages = {51--62},
 numpages = {12},
} 
% publisher = {ACM},
% address = {New York, NY, USA},
% keywords = {Haskell, type checking, type families, type functions},


@unpublished{instant-generics,
  author = {Chakravarty, Manuel and Ditu, Gabriel and Leshchinskiy, Roman},
  title = {Instant Generics: Fast and Easy},
  note = {At \url{http://www.cse.unsw.edu.au/~chak/papers/CDL09.html}},
  year = {2009},
}

@inproceedings{is-easy,
 author = {Magalh\~{a}es, Jos\'{e} Pedro and Holdermans, Stefan and Jeuring, Johan and L\"{o}h, Andres},
 title = {Optimizing generics is easy!},
 booktitle = {Workshop on Partial Evaluation and Program Manipulation},
 series = {PEPM '10},
 year = {2010},
 location = {Madrid, Spain},
 pages = {33--42},
 numpages = {10},
}
% publisher = {ACM},
% address = {New York, NY, USA},
% keywords = {benchmark, functional programming, generic programming, haskell, optimization},

@article{af,
 author = {Mcbride, Conor and Paterson, Ross},
 title = {Applicative programming with effects},
 journal = {Journal Functional Programming},
 volume = {18},
 issue = {1},
 year = {2008},
 pages = {1--13},
 numpages = {13},
} 
% month = {January},
% publisher = {Cambridge University Press},
% address = {New York, NY, USA},

@inproceedings{casl,
   author = {Mossakowski, Till and Haxthausen, Anne E. and Sannella, Donald and Tarlecki, Andrezj},
   title = {{\sc Casl} — the Common Algebraic Specification Language},
   booktitle = {Logics of Specification Languages},
   keyword = {Computer Science},
   pages = {241-298},
   year = {2008}
}
%   series = {Monographs in Theoretical Computer Science},
%   editor = {Bjørner, Dines and Henson, Martin C.},
%   publisher = {Springer Berlin Heidelberg},

@article{gadts,
  author       = {Vytiniotis, Dimitrios and Peyton Jones, Simon and Schrijvers, Tom and Sulzmann, Martin},
  journal      = {Journal of Functional Programming},
  language     = {eng},
  number       = {4-5},
  pages        = {333--412},
  title        = {OUTSIDEIN(X) : modular type inference with local assumptions},
  volume       = {21},
  year         = {2011},
}



@inproceedings{promotion,
 author = {Yorgey, Brent A. and Weirich, Stephanie and Cretin, Julien and Peyton Jones, Simon and Vytiniotis, Dimitrios and Magalh\~{a}es, Jos{\'e} Pedro},
 title = {Giving Haskell a promotion},
 booktitle = {Workshop on Types in Languages Design and Implementation},
 series = {TLDI '12},
 year = {2012},
 location = {Philadelphia, Pennsylvania, USA},
 pages = {53--66},
 numpages = {14},
} 
% publisher = {ACM},
% address = {New York, NY, USA},
% keywords = {haskell, kinds, polymorphism, promotion},

@ARTICLE{total-fp,
    author = {David Turner},
    title = {Total Functional Programming},
    journal = {Journal of Universal Computer Science},
    year = {2004},
    volume = {10},
    pages = {187--209}
}

@inproceedings{essence,
 author = {Wadler, Philip},
 title = {The essence of functional programming},
 booktitle = {Symposium on Principles of Programming Languages},
 series = {POPL '92},
 year = {1992},
 location = {Albuquerque, New Mexico, United States},
 pages = {1--14},
 numpages = {14},
} 
% publisher = {ACM},
% address = {New York, NY, USA},

@inproceedings{pv,
  author = {Jacques Garrigue},
  title = {Programming with polymorphic variants},
  booktitle = {Workshop on ML},
  year = {1998},
}
%  month = sep,

@book{ifp,
  authoer = {Simon Peyton-Jones},
  title = {The Implementation of Functional Programming Languages},
  year = {1987},
  publisher = {Prentice Hall},
}


@inproceedings{fast-and-loose,
 author = {Danielsson, Nils Anders and Hughes, John and Jansson, Patrik and Gibbons, Jeremy},
 title = {Fast and loose reasoning is morally correct},
 booktitle = {Symposium on Principles of Programming Languages},
 series = {POPL '06},
 year = {2006},
 location = {Charleston, South Carolina, USA},
 pages = {206--217},
 numpages = {12},
} 
% publisher = {ACM},
% address = {New York, NY, USA},
% keywords = {equational reasoning, inductive and coinductive types, lifted types, non-strict and strict languages, partial and infinite values, partial and total languages},

@InProceedings{singleton-types,
  title =       "Programming in Omega",
  author =      "Tim Sheard and Nathan Linger",
  year =        "2007",
  booktitle =   "Central European Functional Programming School",
  series =      "Lecture Notes in Computer Science",
  volume =      "5161",
  pages =       "158--227",
}
%  crossref =    "cefp2007",
%  editor =      "Zolt{\'a}n Horv{\'a}th and Rinus Plasmeijer and Anna
                 So{\'o}s and Vikt{\'o}ria Zs{\'o}k",
%  publisher =   "Springer",

@proceedings{cefp2007,
  editor    = {Zolt{\'a}n Horv{\'a}th and
               Rinus Plasmeijer and
               Anna So{\'o}s and
               Vikt{\'o}ria Zs{\'o}k},
  title     = {Central European Functional Programming School, Second Summer
               School, CEFP 2007, Cluj-Napoca, Romania, June 23-30, 2007,
               Revised Selected Lectures},
  booktitle = {CEFP},
  series    = {Lecture Notes in Computer Science},
  volume    = {5161},
  year      = {2008},
}
%  publisher = {Springer},

@inproceedings{gp-indexed,
 author = {Magalh\~{a}es, Jos{\'e} Pedro and Jeuring, Johan},
 title = {Generic programming for indexed datatypes},
 booktitle = {Workshop on Generic programming},
 series = {WGP '11},
 year = {2011},
 location = {Tokyo, Japan},
 pages = {37--46},
 numpages = {10},
} 
% publisher = {ACM},
% address = {New York, NY, USA},
% keywords = {datatype-generic programming, gadt, haskell, indexed datatype},

@article{a-la-carte,
 author = {Swierstra, Wouter},
 title = {Data types \`a la carte},
 journal = {Journal of Functional Programming},
 issue_date = {July 2008},
 volume = {18},
 number = {4},
 year = {2008},
 pages = {423--436},
 numpages = {14},
} 
% month = jul,
% publisher = {Cambridge University Press},
% address = {New York, NY, USA},

@inproceedings{hlist,
 author = {Kiselyov, Oleg and L\"{a}mmel, Ralf and Schupke, Keean},
 title = {Strongly typed heterogeneous collections},
 booktitle = {Workshop on Haskell},
 series = {Haskell '04},
 year = {2004},
 location = {Snowbird, Utah, USA},
 pages = {96--107},
 numpages = {12},
} 
% publisher = {ACM},
% address = {New York, NY, USA},
% keywords = {collections, dependently typed programming, extensible records, haskell, type equality, type improvement, type-indexed rows, type-safe database access},


@inproceedings{syb,
 author = {L\"{a}mmel, Ralf and Jones, Simon Peyton},
 title = {Scrap your boilerplate: a practical design pattern for generic programming},
 booktitle = {Workshop on Types in Languages Design and Implementation},
 series = {TLDI '03},
 year = {2003},
 location = {New Orleans, Louisiana, USA},
 pages = {26--37},
 numpages = {12},
}
% publisher = {ACM},
% address = {New York, NY, USA},
% keywords = {generic programming, rank-2 types, traversal, type cast},

@article{Sarkar:2004:NIC:1016848.1016878,
 author = {Sarkar, Dipanwita and Waddell, Oscar and Dybvig, R. Kent},
 title = {A nanopass infrastructure for compiler education},
 journal = {SIGPLAN Not.},
 volume = {39},
 number = {9},
 year = {2004},
 pages = {201--212},
 numpages = {12},
} 
% issue_date = {September 2004},
% month = sep,
% issn = {0362-1340},
% url = {http://doi.acm.org/10.1145/1016848.1016878},
% doi = {10.1145/1016848.1016878},
% acmid = {1016878},
% publisher = {ACM},
% address = {New York, NY, USA},
% keywords = {compiler writing tools, domain-specific languages, nanopass compilers, syntactic abstraction},

@inproceedings{nanopass,
 author = {Sarkar, Dipanwita and Waddell, Oscar and Dybvig, R. Kent},
 title = {A nanopass infrastructure for compiler education},
 booktitle = {International Conference on Functional Programming},
 series = {ICFP '04},
 year = {2004},
 location = {Snow Bird, UT, USA},
 pages = {201--212},
 numpages = {12},
}
% publisher = {ACM},
% address = {New York, NY, USA},
% keywords = {compiler writing tools, domain-specific languages, nanopass compilers, syntactic abstraction},

@misc{oleg-typeeq,
  author = {Kiselyov, Oleg},
  howpublished = {\url{http://okmij.org/ftp/Haskell/typeEQ.html}},
  year = {2012},
}

@misc{ocaml,
  title = {Objective Caml},
  author = {Leroy, Xavier},
  year = {2000},
  howpublished = {\url{http://caml.inria.fr/ocaml}},
}
